// $ANTLR 3.0.1 /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g 2008-05-26 20:06:21

package portelogiche;


import org.antlr.runtime.*;
import java.util.ArrayList;

public class PorteLogicheLexer extends Lexer {
    public static final int PUNTOVIRGOLA=4;
    public static final int AND=9;
    public static final int VIRGOLA=5;
    public static final int APERTA=6;
    public static final int EOF=-1;
    public static final int CHIUSA=7;
    public static final int CANCELLETTO=11;
    public static final int Tokens=14;
    public static final int NOT=8;
    public static final int OR=10;
    public static final int ALFANUMERICO=12;
    public static final int WHITESPACE=13;

     	public  ArrayList LexerErrors = new ArrayList();

    @Override
            public void emitErrorMessage(String msg) {
                 System.out.println(msg);
                 LexerErrors.add(msg);
            }

    public PorteLogicheLexer() {;} 
    public PorteLogicheLexer(CharStream input) {
        super(input);
    }
    public String getGrammarFileName() { return "/Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g"; }

    // $ANTLR start PUNTOVIRGOLA
    public final void mPUNTOVIRGOLA() throws RecognitionException {
        try {
            int _type = PUNTOVIRGOLA;
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:15:14: ( ';' )
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:15:16: ';'
            {
            match(';'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end PUNTOVIRGOLA

    // $ANTLR start VIRGOLA
    public final void mVIRGOLA() throws RecognitionException {
        try {
            int _type = VIRGOLA;
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:16:9: ( ',' )
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:16:11: ','
            {
            match(','); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end VIRGOLA

    // $ANTLR start APERTA
    public final void mAPERTA() throws RecognitionException {
        try {
            int _type = APERTA;
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:17:8: ( '(' )
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:17:10: '('
            {
            match('('); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end APERTA

    // $ANTLR start CHIUSA
    public final void mCHIUSA() throws RecognitionException {
        try {
            int _type = CHIUSA;
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:18:8: ( ')' )
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:18:10: ')'
            {
            match(')'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end CHIUSA

    // $ANTLR start NOT
    public final void mNOT() throws RecognitionException {
        try {
            int _type = NOT;
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:19:5: ( 'NOT' )
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:19:7: 'NOT'
            {
            match("NOT"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end NOT

    // $ANTLR start AND
    public final void mAND() throws RecognitionException {
        try {
            int _type = AND;
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:20:5: ( 'AND' )
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:20:7: 'AND'
            {
            match("AND"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end AND

    // $ANTLR start OR
    public final void mOR() throws RecognitionException {
        try {
            int _type = OR;
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:21:4: ( 'OR' )
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:21:6: 'OR'
            {
            match("OR"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end OR

    // $ANTLR start CANCELLETTO
    public final void mCANCELLETTO() throws RecognitionException {
        try {
            int _type = CANCELLETTO;
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:22:13: ( '#' )
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:22:15: '#'
            {
            match('#'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end CANCELLETTO

    // $ANTLR start ALFANUMERICO
    public final void mALFANUMERICO() throws RecognitionException {
        try {
            int _type = ALFANUMERICO;
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:128:14: ( ( '0' .. '9' | 'a' .. 'z' | 'A' .. 'Z' )+ )
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:128:19: ( '0' .. '9' | 'a' .. 'z' | 'A' .. 'Z' )+
            {
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:128:19: ( '0' .. '9' | 'a' .. 'z' | 'A' .. 'Z' )+
            int cnt1=0;
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||(LA1_0>='a' && LA1_0<='z')) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:
            	    {
            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z') ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse =
            	            new MismatchedSetException(null,input);
            	        recover(mse);    throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt1 >= 1 ) break loop1;
                        EarlyExitException eee =
                            new EarlyExitException(1, input);
                        throw eee;
                }
                cnt1++;
            } while (true);


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end ALFANUMERICO

    // $ANTLR start WHITESPACE
    public final void mWHITESPACE() throws RecognitionException {
        try {
            int _type = WHITESPACE;
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:130:12: ( ( '\\t' | ' ' | '\\r' | '\\n' | '\\u000C' )+ )
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:130:14: ( '\\t' | ' ' | '\\r' | '\\n' | '\\u000C' )+
            {
            // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:130:14: ( '\\t' | ' ' | '\\r' | '\\n' | '\\u000C' )+
            int cnt2=0;
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( ((LA2_0>='\t' && LA2_0<='\n')||(LA2_0>='\f' && LA2_0<='\r')||LA2_0==' ') ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:
            	    {
            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||(input.LA(1)>='\f' && input.LA(1)<='\r')||input.LA(1)==' ' ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse =
            	            new MismatchedSetException(null,input);
            	        recover(mse);    throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt2 >= 1 ) break loop2;
                        EarlyExitException eee =
                            new EarlyExitException(2, input);
                        throw eee;
                }
                cnt2++;
            } while (true);

             channel = HIDDEN; 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end WHITESPACE

    public void mTokens() throws RecognitionException {
        // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:8: ( PUNTOVIRGOLA | VIRGOLA | APERTA | CHIUSA | NOT | AND | OR | CANCELLETTO | ALFANUMERICO | WHITESPACE )
        int alt3=10;
        switch ( input.LA(1) ) {
        case ';':
            {
            alt3=1;
            }
            break;
        case ',':
            {
            alt3=2;
            }
            break;
        case '(':
            {
            alt3=3;
            }
            break;
        case ')':
            {
            alt3=4;
            }
            break;
        case 'N':
            {
            int LA3_5 = input.LA(2);

            if ( (LA3_5=='O') ) {
                int LA3_11 = input.LA(3);

                if ( (LA3_11=='T') ) {
                    int LA3_14 = input.LA(4);

                    if ( ((LA3_14>='0' && LA3_14<='9')||(LA3_14>='A' && LA3_14<='Z')||(LA3_14>='a' && LA3_14<='z')) ) {
                        alt3=9;
                    }
                    else {
                        alt3=5;}
                }
                else {
                    alt3=9;}
            }
            else {
                alt3=9;}
            }
            break;
        case 'A':
            {
            int LA3_6 = input.LA(2);

            if ( (LA3_6=='N') ) {
                int LA3_12 = input.LA(3);

                if ( (LA3_12=='D') ) {
                    int LA3_15 = input.LA(4);

                    if ( ((LA3_15>='0' && LA3_15<='9')||(LA3_15>='A' && LA3_15<='Z')||(LA3_15>='a' && LA3_15<='z')) ) {
                        alt3=9;
                    }
                    else {
                        alt3=6;}
                }
                else {
                    alt3=9;}
            }
            else {
                alt3=9;}
            }
            break;
        case 'O':
            {
            int LA3_7 = input.LA(2);

            if ( (LA3_7=='R') ) {
                int LA3_13 = input.LA(3);

                if ( ((LA3_13>='0' && LA3_13<='9')||(LA3_13>='A' && LA3_13<='Z')||(LA3_13>='a' && LA3_13<='z')) ) {
                    alt3=9;
                }
                else {
                    alt3=7;}
            }
            else {
                alt3=9;}
            }
            break;
        case '#':
            {
            alt3=8;
            }
            break;
        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
        case '8':
        case '9':
        case 'B':
        case 'C':
        case 'D':
        case 'E':
        case 'F':
        case 'G':
        case 'H':
        case 'I':
        case 'J':
        case 'K':
        case 'L':
        case 'M':
        case 'P':
        case 'Q':
        case 'R':
        case 'S':
        case 'T':
        case 'U':
        case 'V':
        case 'W':
        case 'X':
        case 'Y':
        case 'Z':
        case 'a':
        case 'b':
        case 'c':
        case 'd':
        case 'e':
        case 'f':
        case 'g':
        case 'h':
        case 'i':
        case 'j':
        case 'k':
        case 'l':
        case 'm':
        case 'n':
        case 'o':
        case 'p':
        case 'q':
        case 'r':
        case 's':
        case 't':
        case 'u':
        case 'v':
        case 'w':
        case 'x':
        case 'y':
        case 'z':
            {
            alt3=9;
            }
            break;
        case '\t':
        case '\n':
        case '\f':
        case '\r':
        case ' ':
            {
            alt3=10;
            }
            break;
        default:
            NoViableAltException nvae =
                new NoViableAltException("1:1: Tokens : ( PUNTOVIRGOLA | VIRGOLA | APERTA | CHIUSA | NOT | AND | OR | CANCELLETTO | ALFANUMERICO | WHITESPACE );", 3, 0, input);

            throw nvae;
        }

        switch (alt3) {
            case 1 :
                // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:10: PUNTOVIRGOLA
                {
                mPUNTOVIRGOLA(); 

                }
                break;
            case 2 :
                // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:23: VIRGOLA
                {
                mVIRGOLA(); 

                }
                break;
            case 3 :
                // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:31: APERTA
                {
                mAPERTA(); 

                }
                break;
            case 4 :
                // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:38: CHIUSA
                {
                mCHIUSA(); 

                }
                break;
            case 5 :
                // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:45: NOT
                {
                mNOT(); 

                }
                break;
            case 6 :
                // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:49: AND
                {
                mAND(); 

                }
                break;
            case 7 :
                // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:53: OR
                {
                mOR(); 

                }
                break;
            case 8 :
                // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:56: CANCELLETTO
                {
                mCANCELLETTO(); 

                }
                break;
            case 9 :
                // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:68: ALFANUMERICO
                {
                mALFANUMERICO(); 

                }
                break;
            case 10 :
                // /Users/danielederuschi/Documents/UniBg/Progetto di linguaggi e compilatori/Sources/PorteLogiche.g:1:81: WHITESPACE
                {
                mWHITESPACE(); 

                }
                break;

        }

    }


 

}